<?php
class ForgotPasswordController extends Controller
{
	public $layout = '//layouts/column1';
	
	public function actionIndex()
	{
		$model = new ForgotPasswordForm();
		
		if(isset($_POST['ForgotPasswordForm']))
		{
			$model->attributes = $_POST['ForgotPasswordForm'];

			if($model->validate())
			{
				$criteria = new CDbCriteria;
				$criteria->condition = 'email=:email';
				$criteria->params = array(':email'=>$model->input);
				$user = User::model()->find($criteria);

				if($user===NULL)
					$model->addError('input',Yii::t('user',"Không tìm thấy tài khoản chứa email {email}.", array('{email}'=>$model->input)));
				else
					if($this->sendForgotPasswordValidationKey($user))
					{
						Yii::app()->user->setFlash('message',Yii::t('user','Bạn hãy kiểm tra email để nhận mật khẩu mới.'));
						$this->refresh();
					}
					else
						$model->addError('input',Yii::t('user','Có lỗi trong quá trình gửi mail xác nhận, vui lòng thực hiện lại.'));
			}
		}
	    $this->render('index',array('model'=>$model));
	}
	
	public function actionVerify($activation_key)
	{
		$criteria = new CDbCriteria;
		$criteria->condition = 'activation_key=:activation_key';
		$criteria->params = array(':activation_key'=>$activation_key);
		$user = User::model()->find($criteria);
		
		if($user===NULL) {
			$message =Yii::t('user','Mã xác thực không đúng hoặc đã hết thời gian hiệu lực.');
		} else {
			// make new password, clear activation key and save
			$user->activation_key = '';
			$password = $user->generatePassword();
			$user->update(array('activation_key','password'));
			
			$message = "Xin chao <strong>{$user->name}</strong>,<br /><br />
						Ban da hoan tat qua trinh xac thuc de nhan mat khau moi.<br />
						Day la thong tin dang nhap moi cua ban:<br />
						Ten dang nhap: {$user->email}<br />
						Mat khau: {$password}<br /><br />
						Luu y: Ban hay thay doi mat khau de dam bao su an toan cho tai khoan.<br />
						<a href='" . Yii::app()->controller->createAbsoluteUrl('/user/profile/changePassword') . "'>
						Nhan vao day de dang nhap va thay doi mat khau.
						</a>";

			// send email
			$mail = NMailer::SetupSmtpMail();
			$mail->AddAddress($user->email, $user->name);
			$mail->Subject = Yii::t('user',"Mat khau moi tai ") . Yii::app()->name;
			$mail->Body = $message;
			try {
				$mail->Send();
				$message = Yii::t('user','Một email chứa mật khẩu mới đã được gửi vào hộp thư của bạn, hãy kiểm tra hộp mail để nhận mật khẩu mới.');
			} catch(CException $e) {
				$message = Yii::t('user','Có lỗi trong quá trình gửi mail.');
			}
		}
		$this->render('verify', array('message'=>$message));
	}

	/**
	* @var $user AR User model class 
	**/
	private function sendForgotPasswordValidationKey($user)
	{
		// generate activation key && save
		$user->generateActivationKey();
		$user->update(array('activation_key'));
		
		$message = "Xin chao <strong>{$user->name}</strong>,<br /><br />
					Ban hoac mot nguoi nao do da yeu cau mat khau moi tai website " 
					. "<strong>" . Yii::app()->name . "</strong><br />
					Tai khoan: <strong>{$user->email}</strong><br />
					- Neu ban khong yeu cau dieu nay, hay xoa email nay<br />
					- Neu ban la nguoi gui yeu cau lay mat khau moi, hay nhan vao link sau day:<br />
					<a href='". Yii::app()->controller->createAbsoluteUrl('/user/forgotPassword/verify', array('activation_key'=>$user->activation_key)) . "'>Xac nhan lay mat khau moi</a>";
					
		// send email
		$mail = NMailer::SetupSmtpMail();
		$mail->AddAddress($user->email, $user->name);
		$mail->Subject = Yii::t('user',"Thu xac nhan yeu cau mat khau moi");
		$mail->Body = $message;
		try {
			return $mail->Send();
		} catch(CException $e)
		{
			return false;
		}
	}
		
}